/**
 * @created by helin3 2018-10-19
 * @updated by
 * @description 获取打包外部配置
 * a)、PC打包命令： npm run app 或者  npm run app -- --isPc true
 * b)、Mobile打包命令：npm run app -- --isPc false
 * c)、使用外部配置文件打包命令（则本文件中相关exports.config导出参数配置无效）：
 *     npm run app -- --isPc true --conf ../yufp-web/.setting/build
 *     npm run app -- --isPc false --conf ../yufp-mobile/.setting/build
 *     npm run app -- --isPc false --conf ../yufp-pad/.setting/build
 */
/* global process, exports, __dirname */
/* eslint no-console: 0 */
var path = require('path');
var argv = require('minimist')(process.argv.slice(2)); // 获取控制台命令参数

// 是否PC应用
var isPc = argv.isPc !== undefined ? argv.isPc : true;
isPc = isPc !== 'false';

// 默认打包参数路径
var defaultPathConf = '../../src/config/template/' + (isPc ? 'pc' : 'mobile');
// 外部配置路径参数，没有则使用内部配置
var confTplPath = argv.conf !== undefined ? '../../' + argv.conf : defaultPathConf;
confTplPath = path.resolve(__dirname, confTplPath);
// xx-pkg.json 变态名来源于YuFpIDE
var config = require(confTplPath + (isPc ? '/pc-pkg.json' : '/mobile-pkg.json'));

/**
 * 默认配置
 */
var _defaultConfig = {
  // 外部得提供
  app: 'use-frontend-3.0.0', // 应用打包名（war包名）
  appName: 'YUFP统一前端平台', // 应用名,html title
  buildMock: true, // 是否将mock打包进去
  parallel: true, // dist 总任务是否并行执行, true并行,false 串行
  sourceMap: false, // 是否生成sourcemap
  pageExclude: './pages/common/**/*.html', // 不编译的html

  // 计算得出
  confTplPath: confTplPath,
  isPc: isPc, // 是否PC应用，主要体现在/src/config/template模板不同
  srcRoot: argv.conf ? argv.conf + '/../..' : isPc ? '../use-frontend' : '../yufp-mobile', // 源工程路径(路径不能使用\，要不是/或者\\)
  destRoot: argv.conf ? argv.conf + '/../../dist' : './dist', // 工程编译后存储路径

  // 默认提供
  absoluteSdRoot: false, // 下述srcRoot配置项是否绝对路径, false则表示路径是相对于  xxx/yufp-build/
  yufpCoreMin: true, // yufp-1.0.0.js是否启用压缩版,true启用
  mock: 'mocks', // mock目录
  entry: 'index.html', // 应用入口文件名
  lib: 'libs', // 依赖库目录
  theme: 'themes', // 主题目录
  custom: 'custom', // 自定义目录
  page: 'pages', // 业务功能目录
  extra: argv.extra ? argv.extra : ''
};

exports.config = Object.assign(_defaultConfig, config);